#include<iostream>
#include<vector>
#include<stdio.h>
#include <unistd.h>
#include <stdio.h>
#include <sys/types.h>
#include <sys/wait.h>

enum 
{
  OK = 0,
  OPEN_FILE_ERROR,
};
const std::string gsep = " ";
std::vector<int> data;

int SaveBagin()
{
  std::string name = std::to_string(time(nullptr));
  name += ".backup";
  FILE *fp = fopen(name.c_str(),"w");
  if(fp == nullptr)return OPEN_FILE_ERROR; 
  std::string dataStr;
  for(auto d: data)
  {
    dataStr += std::to_string(d);
    dataStr += gsep;
  }
  fputs(dataStr.c_str(),fp);
  fclose(fp);
  return OK;
}
void Save()
{
  pid_t id = fork();
  if(id == 0)
  {
    int code = SaveBagin();
    exit(code);
  }
  int status = 0;
  pid_t rid = waitpid(id,&status,0);
  if(rid > 0)
  {
    int code = WEXITSTATUS(status);
    if(code == 0)
    {
      printf("备份成功,exit code: %d\n", code);
    }
    else 
    {
      printf("备份失败,exit code: %d\n", code);
    }
  }
  else 
  {
    printf("waitpid");
  }
}
int main()
{
  int cnt = 1;
  while(true)
  {
    data.push_back(cnt);
    sleep(1);
    if(cnt % 10 == 0)
    {
      Save();
    }
  }

  return 0;
}
